package uy.org.softtech.cssuite.excepciones;

import org.springframework.security.core.AuthenticationException;

/**
 * Excepcion a ser lanzada cuando ocurre un error en la autenticación contra el framework de seguridad
 * 
 * @author fabian.lobo
 */
public class AutenticacionException extends AuthenticationException {

	private static final long serialVersionUID = -4427900843561582860L;
	
	private final String campo;

	/**
	 * Constructor que inicializa la excepcion con un mensaje dado.
	 *
	 * @param mensaje - Mensaje a ser mostrado.
	 * @author fabian.lobo
	 */
	public AutenticacionException(String mensaje) {
		super(mensaje);
		this.campo = "";
	}
	
	/**
	 * Constructor que inicializa la excepcion con un mensaje y la excepcion dados.
	 *
	 * @param mensaje - Mensaje a ser mostrado.
	 * @param t - Excepción relacionada
	 * @author fabian.lobo
	 */
	public AutenticacionException(String mensaje, Throwable t) {
		super(mensaje, t);
		this.campo = "";
	}
	
	/**
	 * Constructor que inicializa la excepcion con un mensaje dado relacionado al campo del formulario mencionado.
	 *
	 * @param campo - Campo del formulario relacionado con la excepción de seguridad
	 * @param mensaje - Mensaje a ser mostrado.
	 * @author fabian.lobo
	 */
	public AutenticacionException(String campo, String mensaje) {
		super(mensaje);
		this.campo = campo;
	}
	
	/**
	 * Constructor que inicializa la excepcion con un mensaje dado relacionado al campo del formulario mencionado.
	 *
	 * @param campo - Campo del formulario relacionado con la excepción de seguridad
	 * @param mensaje - Mensaje a ser mostrado.
	 * @param t - Excepción relacionada
	 * @author fabian.lobo
	 */
	public AutenticacionException(String campo, String mensaje, Throwable t) {
		super(mensaje, t);
		this.campo = campo;
	}

	public String getCampo() {
		return campo;
	}

}
